home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
basic
/
array.zip
/
ARRAY.BAS
Wrap
BASIC Source File
|
1989-07-29
|
11KB
|
337 lines
1 CLS
10 PRINT"THIS PROGRAM IS USED TO FIGURE ARRAY CHARACTERISTICS AND FIELD INTENSITY"
20 PRINT"RATIOS FOR MULTI ANTENNA DIRECTIONAL ARRAYS."
30 LOCATE 5,1:PRINT"WRITTEN BY DAVID MATHEWS CHIEF ENGINEER, WMNI RADIO COL. OHIO"
40 PRINT:PRINT"IT IS NOT INTENDED TO BE USED FOR GETTING INFORMATION TO SUBMIT TO"
50 PRINT"THE FEDERAL COMMUNICATIONS COMMISSION (FCC) AND CAN'T BE USED FOR THAT "
60 PRINT"PURPOSE. IT IS HOWEVER A LOT OF FUN TO USE AND CAN BE VERY ENLIGHTENING."
70 PRINT:PRINT"PROGRAM REQUIREMENTS ARE 1) 640K OF MEMORY 2) CGA BOARD OR CGA SIMULATOR"
80 LOCATE 24,1:INPUT"HIT ENTER TO BEGIN";ZZ$
90 'INPUT DATA HERE
100 CLS
110 DIM F(6),P(6),S(6),D(6),H(6),BV(6),DD(6),SS(6),PP(6),S1(6),E$(10),SS$(6),DD$(6)
120 DIM Q(1440):PI=3.141593
130 Z1=57.2958
160 REM ** SET UP FUNCTION KEYS **
170 KEY 1,"FIELD"+CHR$(13)
180 KEY 2,"PHASE"+CHR$(13)
190 KEY 3,"SPACING"+CHR$(13)
200 KEY 4,"ORIENT"+CHR$(13)
210 KEY 5,"STEP"+CHR$(13)
220 KEY 6,"REMOVE"+CHR$(13)
230 KEY 7,"ADD"+CHR$(13)
240 KEY 8,"K FACT"+CHR$(13)
250 KEY 9,"NONE"+CHR$(13)
260 E$(1)="BR1R1NR1U6G1BD5BR3"
270 E$(2)="BR1NR3E3U2H1L1G1BD5BR3"
280 E$(3)="BR1BU1F1R1E1U1H1NL1E1U1H1L1G1BD5BR3"
290 E$(4)="BR4U6G2D1R3BD3"
300 E$(5)="BE1F1R1E1U1H1L1H1U2R3BD6"
310 E$(6)="BE4BU2L2G1D4F1R1E1U1H1L2BD3BR3"
320 E$(7)="BR1U2E3U1L3BD6BR3"
330 E$(8)="BE1F1R1E1U1H1L1H1U1E1R1F1D1G1L1G1D1BD1BR3"
340 E$(9)="BR1R2E1U4H1L1G1D1F1R2BD3"
350 E$(0)="BE1F1R1E1U4H1L1G1D3NE3D1BD1BR3"
360 SLA$="BR2U1E4U1BD6BR3"
370 DG$="BE3E1U1H1L1G1D1F1R1BD3BR2"
380 DOT$="BR1L1"
381 INPUT "DO YOU WANT TO LOAD A SAVED SET OF ARRAY VARIABLES? Y/N";Z$
382 IF Z$="Y" OR Z$="y" THEN 3355
385 INPUT"ENTER NAME OF STATION ";STNAME$
390 INPUT"ENTER FREQUENCY IN KHz ";KHZ
400 INPUT"ENTER POWER IN KWs ";KWS
401 INPUT"ENTER # OF TOWERS ";TOWERS:IF TOWERS<2 THEN PRINT"YOU HAVE TO HAVE MORE THAN 1 TOWER OR IT ISN'T AN ARRAY.":GOTO 401
410 FOR T=1 TO TOWERS
420 CLS
430 PRINT"TOWER #";T:PRINT STRING$(70,"-")
440 PRINT "FIELD ";
450 INPUT F(T)
460 PRINT"PHASE ";
470 INPUT P(T):PP(T)=P(T)
480 PRINT"SPACING ";
490 INPUT S(T):SS(T)=S(T):SS$(T)=STR$(SS(T))
500 PRINT"ORIENTATION ";
510 INPUT D(T):DD(T)=D(T):DD$(T)=STR$(DD(T))
520 PRINT"HEIGHT ";
530 INPUT H(T)
540 IF H(T)=0 THEN PRINT"YOU CAN'T HAVE A 0 DEG. TOWER. TRY AGAIN":GOTO 520
550 PRINT STRING$(70,"-")
560 NEXT T
580 FOR T=1 TO TOWERS
590 P(T)=P(T)/Z1:S(T)=S(T)/Z1:D(T)=D(T)/Z1
600 NEXT T
610 CLS
620 C=2:REM INITIAL SETTING OF STEP RANGE =2
630 K1=1
640 GOSUB 1400
650 FA$="####":FB$="#####.#":FC$="###.###"
660 '
670 'START MAIN PROGRAM HERE
680 R=0
690 M1=TOWERS
700 FOR AO=0 TO 90 STEP C
710 A1=AO/Z1
720 A2=(AO+90)/Z1
730 A3=(AO+180)/Z1
740 A4=(AO+270)/Z1
750 X=0:Y=0
760 FOR L%=1 TO M1
770 S1=S(L%)*COS(A1-D(L%))
780 B=S1+P(L%)
790 X=F(L%)*COS(B)+X
800 Y=F(L%)*COS(B)+Y
810 NEXT L%
820 E1=K1*SQR(X*X+Y*Y)
830 X=0:Y=0
840 FOR L%=1 TO M1
850 S2=S(L%)*COS(A2-D(L%))
860 B=S2+P(L%)
870 X=F(L%)*COS(B)+X
880 Y=F(L%)*COS(B)+Y
890 NEXT L%
900 E2=K1*SQR(X*X+Y*Y)
910 X=0:Y=0
920 FOR L%=1 TO M1
930 S3=S(L%)*COS(A3-D(L%))
940 B=S3+P(L%)
950 X=F(L%)*COS(B)+X
960 Y=F(L%)*COS(B)+Y
970 NEXT L%
980 E3=K1*SQR(X*X+Y*Y)
990 X=0:Y=0
1000 FOR L%=1 TO M1
1010 S4=S(L%)*COS(A4-D(L%))
1020 B=S4+P(L%)
1030 X=F(L%)*COS(B)+X
1040 Y=F(L%)*COS(B)+Y
1050 NEXT L%
1060 E4=K1*SQR(X*X+Y*Y)
1070 X=0:Y=0
1080 Q(R)=E1:Q(R+90)=E2:Q(R+180)=E3:Q(R+270)=E4
1090 R=R+C
1100 NEXT AO
1110 GOSUB 1800
1150 INPUT"DO YOU WANT A COMPLETE PRINT OUT OF DATA ";ZX$
1160 IF ZX$="Y" OR ZX$="y" THEN 1170 ELSE 1380
1170 REM ADD A CHR$(12) HERE FOR A FORM FEED AT BEGINNING OF PRINTOUT
1180 LPRINT TAB(20);"FIELD";TAB(30);"PHASE";TAB(40);"SPACING";TAB(50);"ORIENT";TAB(60);"HEIGHT"
1190 FOR T=1 TO TOWERS
1200 LPRINT "TOWER #";T;TAB(20);F(T);TAB(30);PP(T);TAB(40);SS(T);TAB(50);DD(T);TAB(60);H(T)
1210 NEXT T
1220 LPRINT:LPRINT:LPRINT
1230 LPRINT"THEORETICAL HORIZONTAL PATTERN AT ONE MILE."
1240 LPRINT:LPRINT:LPRINT
1250 LPRINT"AZ.";TAB(10);"MV/M";TAB(20);"AZ.";TAB(30);"MV/M";TAB(40);"AZ.";TAB(50);"MV/M";TAB(60);"AZ.";TAB(70);"MV/M"
1260 LPRINT STRING$(79,"-")
1270 R=0:P=0
1280 LPRINT USING"###";P;:LPRINT TAB(10);USING"###.###";Q(R);:PRINT USING"###";P;:PRINT TAB(10);USING"###.###";Q(R);
1290 LPRINT TAB(20);USING"###";P+90;:LPRINT TAB(30);USING"###.###";Q(R+90);:PRINT TAB(20);USING"###";P+90;:PRINT TAB(30);USING"###.###";Q(R+90);
1300 LPRINT TAB(40);USING"###";P+180;:LPRINT TAB(50);USING"###.###";Q(R+180);:PRINT TAB(40);USING"###";P+180;:PRINT TAB(50);USING"###.###";Q(R+180);
1310 LPRINT TAB(60);USING"###";P+270;:LPRINT TAB(70);USING"###.###";Q(R+270):PRINT TAB(60);USING"###";P+270;:PRINT TAB(70);USING"###.###";Q(R+270)
1320 R=R+C:P=P+C
1330 IF R<81 THEN 1280
1340 GOTO 1360
1350 STOP
1360 PRINT:PRINT:INPUT"DO YOU WANT A COMPLETE PRINT OUT?";Z$
1370 IF Z$="Y" OR Z$="y" THEN 1270
1380 'CHANGE INFORMATION HERE
1400 CLS:PRINT"CHANGE INFORMATION FOR WHAT?:"
1410 GOSUB 1730
1420 PRINT
1430 PRINT"F1) FIELD"
1440 PRINT"F2) PHASE"
1450 PRINT"F3) SPACING"
1460 PRINT"F4) ORIENTATION"
1470 PRINT"F5) STEP FACTOR";" <";C;">"
1471 PRINT"F6) REMOVE A TOWER"
1472 PRINT"F7) ADD A TOWER"
1480 PRINT"F8) K FACTOR";" <";K1;">"
1481 PRINT"F9) NONE
1482 PRINT"77) LOAD NEW PARAMETERS"
1495 PRINT"88) SAVE ARRAY SETTINGS"
1500 PRINT"99) QUIT"
1510 PRINT:PRINT:INPUT"SELECT USING FUNCTION KEYS ";N$
1512 IF N$="77" THEN GOTO 3355
1515 IF N$="88" THEN GOSUB 3300
1520 IF N$="REMOVE" THEN GOTO 2780
1530 IF N$="ADD" THEN GOTO 2850
1540 IF N$="99" THEN STOP
1560 IF N$="STEP" THEN INPUT"WHAT IS THE NEW STEP FACTOR";C:CLS:GOTO 1380
1570 IF N$="K FACT" THEN INPUT"WHAT IS THE NEW K FACTOR";K1:CLS:GOTO 1380
1580 IF N$="NONE" THEN 660
1590 IF N$="FIELD" THEN N=1
1600 IF N$="PHASE" THEN N=2
1610 IF N$="SPACING" THEN N=3
1620 IF N$="ORIENT" THEN N=4
1630 IF N=1 THEN Y$="FIELD" ELSE IF N=2 THEN Y$="PHASE" ELSE IF N=3 THEN Y$="SPACING" ELSE IF N=4 THEN Y$="ORIENTATION"
1640 INPUT "ON WHICH TOWER? ";M
1650 PRINT "ENTER NEW ";Y$;" FOR TOWER ";M;:INPUT KL
1660 IF N=1 THEN F(M)=KL:PG=F(M)
1670 IF N=2 THEN P(M)=KL:PG=P(M):P(M)=P(M)/Z1:PP(M)=KL
1680 IF N=3 THEN S(M)=KL:PG=S(M):S(M)=S(M)/Z1:SS(M)=KL:SS$(M)=STR$(KL)
1690 IF N=4 THEN D(M)=KL:PG=D(M):D(M)=D(M)/Z1:DD(M)=KL:DD$(M)=STR$(KL)
1700 REM
1710 CLS:GOTO 1400
1720 CLS
1730 REM PRINT ON SCREEN LAST INFORMATION ON TOWERS
1740 PRINT TAB(20);"FIELD";TAB(30);"PHASE";TAB(40);"SPACING";TAB(50);"ORIENT"
1750 FOR T=1 TO TOWERS
1760 IF H(T)=0 THEN 1780
1770 PRINT "TOWER #";T;TAB(20);F(T);TAB(30);PP(T);TAB(40);SS$(T);TAB(50);DD$(T)
1780 NEXT T
1790 RETURN
1800 REM PLOT THE PATTERN
1810 SCREEN 2:CLS
1820 INPUT"(E)XPANDED SCALE OR (S)TANDARD SCALE";CX$
1830 LOCATE 1,55:PRINT"K FACTOR= ";K1
1840 DEF SEG=&HB800:BLOAD"POLAR.BIN",0
1850 GOSUB 2120
1860 GOSUB 2460
1870 LOCATE 12,1:PRINT "1/4 WAVE = ";INT(WL)/4;
1890 RADIUS=200
1900 QHI=Q(1):QLO=10000
1910 FOR HI=0 TO 360 STEP C
1920 IF Q(HI)>QHI THEN QHI=Q(HI):IQ$=STR$(HI):QHI$=STR$(QHI):QHI$=LEFT$(QHI$,5)
1930 IF Q(HI)<QLO THEN QLO=Q(HI):II$=STR$(HI):QLO$=STR$(QLO):QLO$=LEFT$(QLO$,5)
1940 NEXT HI
1950 QH$=STR$(QHI)
1960 FOR TY=0 TO 360 STEP C
1970 RATIO=Q(TY)/QHI
1980 X1=TY*(PI/180)
1990 X=SIN(X1)*RATIO
2000 Y=COS(X1)*RATIO
2010 Y=100-((Y*.42)*150)
2020 X=420+(X*150)
2030 IF FIRST=0 THEN X3=X:Y3=Y:FIRST=1
2040 PSET (X,Y):LINE (X3,Y3)-(X,Y):X3=X:Y3=Y
2050 NEXT TY
2052 LOCATE 2,66:PRINT"LO=";INT(QLO);"/";II$
2053 LOCATE 1,66:PRINT"HI=";INT(QHI);"/";IQ$
2060 IF CX$="E" OR CX$="e" THEN GOSUB 3060
2065 LOCATE 24,70:PRINT "HIT ANY KEY";
2066 I$=INKEY$:IF I$="" THEN 2066
2070 FIRST=0
2110 SCREEN 0:RETURN
2120 REM PUT PARAMETERS ON THE SCREEN
2130 B=5
2140 LOCATE 1,2:PRINT"PARAMETERS:";
2150 LOCATE 2,2:PRINT"FREQ. ";KHZ;"KHz";
2160 LOCATE 3,2:PRINT"POWER ";KWS;"KW";
2170 LOCATE 4,2
2180 PRINT" FIELD PHASE";
2190 LOCATE B,2
2200 FOR T=1 TO TOWERS
2210 IF H(T)=0 THEN 2250
2220 PRINT T;TAB(5);F(T);TAB(11);PP(T);
2230 B=B+1
2240 LOCATE B,2
2250 NEXT T
2260 RETURN
2460 LODIS=0
2470 FOR YT=1 TO TOWERS
2480 IF SS(YT)>LODIS THEN LODIS=SS(YT)
2490 NEXT YT
250